﻿// ===============================================================================
//  Copyright © ymind.net. All rights reserved .
//  官方网站：http://ymind.net/
//  版权所有：彦铭工作室 老陈出品
// ===============================================================================

using System;
using System.Text.RegularExpressions;

namespace Lcsoft.UrlRewriter.Conditions
{
	/// <summary>
	/// 表示与正则表达式相匹配的 URL 的先决条件。
	/// </summary>
	public sealed class UrlMatchCondition : IRewriteCondition
	{
		/// <summary>
		/// 初始化 <see cref="UrlMatchCondition"/> 类的新实例。
		/// </summary>
		/// <param name="pattern">包含匹配模式的字符串。</param>
		public UrlMatchCondition(string pattern)
		{
			if (pattern == null) throw new ArgumentNullException("pattern");

			this.Pattern = pattern;
		}

		/// <summary>
		/// 获取包含匹配模式的字符串。
		/// </summary>
		public string Pattern { get; private set; }

		#region IRewriteCondition Members

		/// <summary>
		/// 判断条件是否满足。
		/// </summary>
		/// <param name="context"><see cref="RewriteContext"/> 对象的实例。</param>
		/// <returns>如果条件满足则返回 true，否则返回 false。</returns>
		public bool IsMatch(RewriteContext context)
		{
			if (context == null) throw new ArgumentNullException("context");

			var regex = new Regex(context.ResolveLocation(this.Pattern), RegexOptions.IgnoreCase);
			var match = regex.Match(context.Location);

			if (!match.Success) return false;

			context.LastMatch = match;

			return true;
		}

		#endregion
	}
}
